Skip to content

[P157] Add plugin for 14-segment displays (HT16K33)#5556

Open
tonhuisman wants to merge 13 commits into
letscontrolit:megafrom
tonhuisman:feature/P157-plugin-14-segment-display
Open

[P157] Add plugin for 14-segment displays (HT16K33)#5556
tonhuisman wants to merge 13 commits into
letscontrolit:megafrom
tonhuisman:feature/P157-plugin-14-segment-display

Conversation

@tonhuisman

@tonhuisman tonhuisman commented May 22, 2026

Copy link
Copy Markdown
Contributor

Features:

  • [P157] Add plugin for 14-segment displays (HT16K33), (1..8 modules) 4..64 digits, (based on P073), also supports 7-segment HT16K33 displays.
  • Feature set very similar to P073, with the same command set, scrolling display, and binary segment-control.
  • Uses Noiasca HT16K33 library for 14 and 7 segment displays.
  • Updated default fonts to show ^ as a ° symbol.
  • [P057] Update name to better distinguish from [P157].
  • [P165] Update build feature flag.

TODO:

  • Documentation.
  • Add font support for 7-segment displays, similar to P073, using the same font data.
  • Testing.

@tonhuisman

Copy link
Copy Markdown
Contributor Author

@fly74 This plugin seems like something you might like 😉
Are you in, and available, for testing? I can provide a build (ESP32 based, as it's not included in ESP8266 builds by default) if needed. You'll need at least 1 HT16K33 14 segment (or 7 segment) display.

@fly74

fly74 commented May 25, 2026

Copy link
Copy Markdown

@fly74 This plugin seems like something you might like 😉 Are you in, and available, for testing? I can provide a build (ESP32 based, as it's not included in ESP8266 builds by default) if needed. You'll need at least 1 HT16K33 14 segment (or 7 segment) display.

@tonhuisman sounds good but the only 7segs I actually use are these:

image

I think that doesn't help.

@tonhuisman

Copy link
Copy Markdown
Contributor Author

Well, it's something new to investigate, might you need an excuse to do some lab-experiments 🤣
These 14-segment displays are quite fun, and text is somewhat better to comprehend than the limited/specially crafted fonts available in P073.

@fly74

fly74 commented May 25, 2026

Copy link
Copy Markdown

I'll try to get some.

@fly74

fly74 commented Jun 12, 2026

Copy link
Copy Markdown

Hi @tonhuisman mine are just arrived, which build should I use for a first test?

And what is the wiring here is one more?
image

@TD-er

TD-er commented Jun 12, 2026

Copy link
Copy Markdown
Member

@tonhuisman

Copy link
Copy Markdown
Contributor Author

And what is the wiring here are one more?

The VCC is what powers the chip and the display, and Vi2c is the power that the I2C pull-up resistors are connected to. So you can use 3.3V I2C pins, and power the display from a 5V source. That's how I'm using it and it works great, as you don't need a level converter 😃
When connecting multiple displays on the same bus (with incrementing I2C addresses) you can leave the Vi2c of some display boards disconnected, as having too many 10k resistors in parallel results in a rather low value for the I2C pull-up.

@fly74

fly74 commented Jun 12, 2026

Copy link
Copy Markdown

@fly74

fly74 commented Jun 12, 2026

Copy link
Copy Markdown

With Display B build looks really cool image

@fly74

fly74 commented Jun 12, 2026

Copy link
Copy Markdown

I2c addresses are changed with shortcut different of the 3 solder points?

@tonhuisman

Copy link
Copy Markdown
Contributor Author

I2c addresses are changed with shortcut different of the 3 solder points?

Yes, binary counting, A0, A1 and A2, so 8 possible options.
The plugin expects displays placed from left to right to have incrementing addresses, so you can combine up to 8 x 4 digits or 8 x 8 digits. No combination of different module sizes supported though, way to complex to configure.

@fly74

fly74 commented Jun 12, 2026

Copy link
Copy Markdown

I2c addresses are changed with shortcut different of the 3 solder points?

Yes, binary counting, A0, A1 and A2, so 8 possible options. The plugin expects displays placed from left to right to have incrementing addresses, so you can combine up to 8 x 4 digits or 8 x 8 digits. No combination of different module sizes supported though, way to complex to configure.

But I need 2x4 digit as 2 separate line, is this possible?

<4><4> = 1st line
<4><4> = 2st line

@tonhuisman

Copy link
Copy Markdown
Contributor Author

But I need 2x4 digit as 2 separate line, is this possible?

Use 2 tasks, and change the starting address of the second task to the address of that module 🤷‍♂️
Or if you can't find your soldering iron (or are lazy 😛), configure a second I2C bus, and connect the second module to that bus 🤣

@fly74

fly74 commented Jun 12, 2026

Copy link
Copy Markdown

second I2C bus

but I need the 4x4 digit :) = 4 addresses

@tonhuisman

tonhuisman commented Jun 12, 2026

Copy link
Copy Markdown
Contributor Author

just make the addresses sequential on the same I2C bus, configure the first 2 modules (0x70 and 0x71) in the first task with I2C address 0x70, and the 3rd and 4th module (0x72 and 0x73) in the second task by selecting address 0x72 as the I2C address. Set both tasks to have 2 displays.

And to make the A0/A1/A2 addressing of the modules explicit:
0x70 = all open
0x71 = A0 closed
0x72 = A1 closed
0x73 = A0, A1 closed
0x74 = A2 closed
0x75 = A0, A2 closed
0x76 = A1, A2 closed
0x77 = A0, A1, A2 closed

@fly74

fly74 commented Jun 12, 2026

Copy link
Copy Markdown

just make the addresses sequential on the same I2C bus, configure the first 2 modules (0x70 and 0x71) in the first task with I2C address 0x70, and the 3rd and 4th module (0x72 and 0x73) in the second task by selecting address 0x72 as the I2C address. Set both tasks to have 2 displays.

Understood.

Since when we have 2 i2c busses ?

@tonhuisman

Copy link
Copy Markdown
Contributor Author

Since when we have 2 i2c busses ?

Hmm, about 18 months ago?

@fly74

fly74 commented Jun 12, 2026

Copy link
Copy Markdown

Since when we have 2 i2c busses ?

Hmm, about 18 months ago?

Oh didn't recognized it.

@tonhuisman

Copy link
Copy Markdown
Contributor Author

Oh didn't recognized it.

We should do our marketing and promotion better... 😁

@fly74

fly74 commented Jun 12, 2026

Copy link
Copy Markdown

Oh didn't recognized it.

We should do our marketing and promotion better... 😁

🤣

@fly74

fly74 commented Jun 12, 2026

Copy link
Copy Markdown

So I play a little around. In which builds is the plugin included?

@tonhuisman

tonhuisman commented Jun 12, 2026

Copy link
Copy Markdown
Contributor Author

Collection (not IR), Display, MAX, ESP32 only (and Custom builds, of course)

@fly74

fly74 commented Jun 13, 2026

Copy link
Copy Markdown

@tonhuisman 2 things, scrolling is not working and can we have a slashed zero?

@tonhuisman

Copy link
Copy Markdown
Contributor Author

Scrolling needs the content to be longer than the display can hold (hmm, I could add a setting for that 🤔).
The slashed zero is feasible, have to think about making that optional too, as it may not be appreciated by all users.

@fly74

fly74 commented Jun 13, 2026

Copy link
Copy Markdown

I set a long text in rule with this option
image
but no scrolling

ESP_Easy_mega_20260612_display_B_ESP32_4M316k

@TD-er

TD-er commented Jun 13, 2026

Copy link
Copy Markdown
Member

The slashed zero is feasible, have to think about making that optional too, as it may not be appreciated by all users.

What! no respect for traditions....
A 0 should have a slash through it. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants